package doublePointer;/*

75. 颜色分类

    一趟遍历,遇见0左边依次放, 遇见2右边往左依次放, 遇见1不用管只需循环自增
    不能用for, 只能用while, 因为2交换之后同一位置可能还要继续交换

*/
public class SortColors75 {
    public void sortColors(int[] nums) {
        int left = 0;
        int right = nums.length - 1;
        int i=0;
        while (i<nums.length && i<=right){
            if(nums[i]==1){
                swap(nums,i,left);
                ++left;
                ++i;
            }else {
                if(nums[i]==1){
                    ++i;
                }else {
                    swap(nums,i,right);
                    --right;
                }
            }
        }
    }
    private void swap(int[] nums, int a, int b) {
        int tmp=nums[a];
        nums[a]=nums[b];
        nums[b]=tmp;
    }
}
